<!DOCTYPE HTML>
<!-- NewPage -->
<html lang="en">
<head><!-- start favicons snippet, use https://realfavicongenerator.net/ --><link rel="apple-touch-icon" sizes="180x180" href="/assets/apple-touch-icon.png"><link rel="icon" type="image/png" sizes="32x32" href="/assets/favicon-32x32.png"><link rel="icon" type="image/png" sizes="16x16" href="/assets/favicon-16x16.png"><link rel="manifest" href="/assets/site.webmanifest"><link rel="mask-icon" href="/assets/safari-pinned-tab.svg" color="#fc4d50"><link rel="shortcut icon" href="/assets/favicon.ico"><meta name="msapplication-TileColor" content="#ffc40d"><meta name="msapplication-config" content="/assets/browserconfig.xml"><meta name="theme-color" content="#ffffff"><!-- end favicons snippet -->
<title>BinarySearchSeeker (ExoPlayer library)</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
<link rel="stylesheet" type="text/css" href="../../../../../jquery/jquery-ui.css" title="Style">
<script type="text/javascript" src="../../../../../script.js"></script>
<script type="text/javascript" src="../../../../../jquery/jszip/dist/jszip.min.js"></script>
<script type="text/javascript" src="../../../../../jquery/jszip-utils/dist/jszip-utils.min.js"></script>
<!--[if IE]>
<script type="text/javascript" src="../../../../../jquery/jszip-utils/dist/jszip-utils-ie.min.js"></script>
<![endif]-->
<script type="text/javascript" src="../../../../../jquery/jquery-3.5.1.js"></script>
<script type="text/javascript" src="../../../../../jquery/jquery-ui.js"></script>
</head>
<body>
<script type="text/javascript"><!--
    try {
        if (location.href.indexOf('is-external=true') == -1) {
            parent.document.title="BinarySearchSeeker (ExoPlayer library)";
        }
    }
    catch(err) {
    }
//-->
var data = {"i0":10,"i1":10,"i2":10,"i3":10,"i4":10,"i5":10,"i6":10,"i7":10,"i8":10};
var tabs = {65535:["t0","All Methods"],2:["t2","Instance Methods"],8:["t4","Concrete Methods"]};
var altColor = "altColor";
var rowColor = "rowColor";
var tableTab = "tableTab";
var activeTableTab = "activeTableTab";
var pathtoroot = "../../../../../";
var useModuleDirectories = false;
loadScripts(document, 'script');</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
<header role="banner">
<nav role="navigation">
<div class="fixedNav">
<!-- ========= START OF TOP NAVBAR ======= -->
<div class="topNav"><a id="navbar.top">
<!--   -->
</a>
<div class="skipNav"><a href="#skip.navbar.top" title="Skip navigation links">Skip navigation links</a></div>
<a id="navbar.top.firstrow">
<!--   -->
</a>
<ul class="navList" title="Navigation">
<li><a href="../../../../../index.html">Overview</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="navBarCell1Rev">Class</li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../../../deprecated-list.html">Deprecated</a></li>
<li><a href="../../../../../index-all.html">Index</a></li>
<li><a href="../../../../../help-doc.html">Help</a></li>
</ul>
</div>
<div class="subNav">
<ul class="navList" id="allclasses_navbar_top">
<li><a href="../../../../../allclasses.html">All&nbsp;Classes</a></li>
</ul>
<ul class="navListSearch">
<li><label for="search">SEARCH:</label>
<input type="text" id="search" value="search" disabled="disabled">
<input type="reset" id="reset" value="reset" disabled="disabled">
</li>
</ul>
<div>
<script type="text/javascript"><!--
  allClassesLink = document.getElementById("allclasses_navbar_top");
  if(window==top) {
    allClassesLink.style.display = "block";
  }
  else {
    allClassesLink.style.display = "none";
  }
  //-->
</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
</div>
<div>
<ul class="subNavList">
<li>Summary:&nbsp;</li>
<li><a href="#nested.class.summary">Nested</a>&nbsp;|&nbsp;</li>
<li><a href="#field.summary">Field</a>&nbsp;|&nbsp;</li>
<li><a href="#constructor.summary">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method.summary">Method</a></li>
</ul>
<ul class="subNavList">
<li>Detail:&nbsp;</li>
<li><a href="#field.detail">Field</a>&nbsp;|&nbsp;</li>
<li><a href="#constructor.detail">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method.detail">Method</a></li>
</ul>
</div>
<a id="skip.navbar.top">
<!--   -->
</a></div>
<!-- ========= END OF TOP NAVBAR ========= -->
</div>
<div class="navPadding">&nbsp;</div>
<script type="text/javascript"><!--
$('.navPadding').css('padding-top', $('.fixedNav').css("height"));
//-->
</script>
</nav>
</header>
<!-- ======== START OF CLASS DATA ======== -->
<main role="main">
<div class="header">
<div class="subTitle"><span class="packageLabelInType">Package</span>&nbsp;<a href="package-summary.html">com.google.android.exoplayer2.extractor</a></div>
<h2 title="Class BinarySearchSeeker" class="title">Class BinarySearchSeeker</h2>
</div>
<div class="contentContainer">
<ul class="inheritance">
<li><a href="https://developer.android.com/reference/java/lang/Object.html" title="class or interface in java.lang" class="externalLink" target="_top">java.lang.Object</a></li>
<li>
<ul class="inheritance">
<li>com.google.android.exoplayer2.extractor.BinarySearchSeeker</li>
</ul>
</li>
</ul>
<div class="description">
<ul class="blockList">
<li class="blockList">
<hr>
<pre>public abstract class <span class="typeNameLabel">BinarySearchSeeker</span>
extends <a href="https://developer.android.com/reference/java/lang/Object.html" title="class or interface in java.lang" class="externalLink" target="_top">Object</a></pre>
<div class="block">A seeker that supports seeking within a stream by searching for the target frame using binary
 search.

 <p>This seeker operates on a stream that contains multiple frames (or samples). Each frame is
 associated with some kind of timestamps, such as stream time, or frame indices. Given a target
 seek time, the seeker will find the corresponding target timestamp, and perform a search
 operation within the stream to identify the target frame and return the byte position in the
 stream of the target frame.</div>
</li>
</ul>
</div>
<div class="summary">
<ul class="blockList">
<li class="blockList">
<!-- ======== NESTED CLASS SUMMARY ======== -->
<section role="region">
<ul class="blockList">
<li class="blockList"><a id="nested.class.summary">
<!--   -->
</a>
<h3>Nested Class Summary</h3>
<table class="memberSummary">
<caption><span>Nested Classes</span><span class="tabEnd">&nbsp;</span></caption>
<tr>
<th class="colFirst" scope="col">Modifier and Type</th>
<th class="colSecond" scope="col">Class</th>
<th class="colLast" scope="col">Description</th>
</tr>
<tr class="altColor">
<td class="colFirst"><code>static class&nbsp;</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="BinarySearchSeeker.BinarySearchSeekMap.html" title="class in com.google.android.exoplayer2.extractor">BinarySearchSeeker.BinarySearchSeekMap</a></span></code></th>
<td class="colLast">
<div class="block">A <a href="SeekMap.html" title="interface in com.google.android.exoplayer2.extractor"><code>SeekMap</code></a> implementation that returns the estimated byte location from <a href="BinarySearchSeeker.SeekOperationParams.html#calculateNextSearchBytePosition(long,long,long,long,long,long)"><code>BinarySearchSeeker.SeekOperationParams.calculateNextSearchBytePosition(long, long, long, long, long, long)</code></a> for
 each <a href="BinarySearchSeeker.BinarySearchSeekMap.html#getSeekPoints(long)"><code>BinarySearchSeeker.BinarySearchSeekMap.getSeekPoints(long)</code></a> query.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>static class&nbsp;</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="BinarySearchSeeker.DefaultSeekTimestampConverter.html" title="class in com.google.android.exoplayer2.extractor">BinarySearchSeeker.DefaultSeekTimestampConverter</a></span></code></th>
<td class="colLast">
<div class="block">A <a href="BinarySearchSeeker.SeekTimestampConverter.html" title="interface in com.google.android.exoplayer2.extractor"><code>BinarySearchSeeker.SeekTimestampConverter</code></a> implementation that returns the seek time itself as the
 timestamp for a seek time position.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>protected static class&nbsp;</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="BinarySearchSeeker.SeekOperationParams.html" title="class in com.google.android.exoplayer2.extractor">BinarySearchSeeker.SeekOperationParams</a></span></code></th>
<td class="colLast">
<div class="block">Contains parameters for a pending seek operation by <a href="BinarySearchSeeker.html" title="class in com.google.android.exoplayer2.extractor"><code>BinarySearchSeeker</code></a>.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>protected static interface&nbsp;</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="BinarySearchSeeker.SeekTimestampConverter.html" title="interface in com.google.android.exoplayer2.extractor">BinarySearchSeeker.SeekTimestampConverter</a></span></code></th>
<td class="colLast">
<div class="block">A converter that converts seek time in stream time into target timestamp for the <a href="BinarySearchSeeker.html" title="class in com.google.android.exoplayer2.extractor"><code>BinarySearchSeeker</code></a>.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>static class&nbsp;</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="BinarySearchSeeker.TimestampSearchResult.html" title="class in com.google.android.exoplayer2.extractor">BinarySearchSeeker.TimestampSearchResult</a></span></code></th>
<td class="colLast">
<div class="block">Represents possible search results for <a href="BinarySearchSeeker.TimestampSeeker.html#searchForTimestamp(com.google.android.exoplayer2.extractor.ExtractorInput,long)"><code>BinarySearchSeeker.TimestampSeeker.searchForTimestamp(ExtractorInput, long)</code></a>.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>protected static interface&nbsp;</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="BinarySearchSeeker.TimestampSeeker.html" title="interface in com.google.android.exoplayer2.extractor">BinarySearchSeeker.TimestampSeeker</a></span></code></th>
<td class="colLast">
<div class="block">A seeker that looks for a given timestamp from an input.</div>
</td>
</tr>
</table>
</li>
</ul>
</section>
<!-- =========== FIELD SUMMARY =========== -->
<section role="region">
<ul class="blockList">
<li class="blockList"><a id="field.summary">
<!--   -->
</a>
<h3>Field Summary</h3>
<table class="memberSummary">
<caption><span>Fields</span><span class="tabEnd">&nbsp;</span></caption>
<tr>
<th class="colFirst" scope="col">Modifier and Type</th>
<th class="colSecond" scope="col">Field</th>
<th class="colLast" scope="col">Description</th>
</tr>
<tr class="altColor">
<td class="colFirst"><code>protected <a href="BinarySearchSeeker.BinarySearchSeekMap.html" title="class in com.google.android.exoplayer2.extractor">BinarySearchSeeker.BinarySearchSeekMap</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#seekMap">seekMap</a></span></code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>protected <a href="BinarySearchSeeker.SeekOperationParams.html" title="class in com.google.android.exoplayer2.extractor">BinarySearchSeeker.SeekOperationParams</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#seekOperationParams">seekOperationParams</a></span></code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>protected <a href="BinarySearchSeeker.TimestampSeeker.html" title="interface in com.google.android.exoplayer2.extractor">BinarySearchSeeker.TimestampSeeker</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#timestampSeeker">timestampSeeker</a></span></code></th>
<td class="colLast">&nbsp;</td>
</tr>
</table>
</li>
</ul>
</section>
<!-- ======== CONSTRUCTOR SUMMARY ======== -->
<section role="region">
<ul class="blockList">
<li class="blockList"><a id="constructor.summary">
<!--   -->
</a>
<h3>Constructor Summary</h3>
<table class="memberSummary">
<caption><span>Constructors</span><span class="tabEnd">&nbsp;</span></caption>
<tr>
<th class="colFirst" scope="col">Modifier</th>
<th class="colSecond" scope="col">Constructor</th>
<th class="colLast" scope="col">Description</th>
</tr>
<tr class="altColor">
<td class="colFirst"><code>protected </code></td>
<th class="colConstructorName" scope="row"><code><span class="memberNameLink"><a href="#%3Cinit%3E(com.google.android.exoplayer2.extractor.BinarySearchSeeker.SeekTimestampConverter,com.google.android.exoplayer2.extractor.BinarySearchSeeker.TimestampSeeker,long,long,long,long,long,long,int)">BinarySearchSeeker</a></span>&#8203;(<a href="BinarySearchSeeker.SeekTimestampConverter.html" title="interface in com.google.android.exoplayer2.extractor">BinarySearchSeeker.SeekTimestampConverter</a>&nbsp;seekTimestampConverter,
                  <a href="BinarySearchSeeker.TimestampSeeker.html" title="interface in com.google.android.exoplayer2.extractor">BinarySearchSeeker.TimestampSeeker</a>&nbsp;timestampSeeker,
                  long&nbsp;durationUs,
                  long&nbsp;floorTimePosition,
                  long&nbsp;ceilingTimePosition,
                  long&nbsp;floorBytePosition,
                  long&nbsp;ceilingBytePosition,
                  long&nbsp;approxBytesPerFrame,
                  int&nbsp;minimumSearchRange)</code></th>
<td class="colLast">
<div class="block">Constructs an instance.</div>
</td>
</tr>
</table>
</li>
</ul>
</section>
<!-- ========== METHOD SUMMARY =========== -->
<section role="region">
<ul class="blockList">
<li class="blockList"><a id="method.summary">
<!--   -->
</a>
<h3>Method Summary</h3>
<table class="memberSummary">
<caption><span id="t0" class="activeTableTab"><span>All Methods</span><span class="tabEnd">&nbsp;</span></span><span id="t2" class="tableTab"><span><a href="javascript:show(2);">Instance Methods</a></span><span class="tabEnd">&nbsp;</span></span><span id="t4" class="tableTab"><span><a href="javascript:show(8);">Concrete Methods</a></span><span class="tabEnd">&nbsp;</span></span></caption>
<tr>
<th class="colFirst" scope="col">Modifier and Type</th>
<th class="colSecond" scope="col">Method</th>
<th class="colLast" scope="col">Description</th>
</tr>
<tr id="i0" class="altColor">
<td class="colFirst"><code>protected <a href="BinarySearchSeeker.SeekOperationParams.html" title="class in com.google.android.exoplayer2.extractor">BinarySearchSeeker.SeekOperationParams</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#createSeekParamsForTargetTimeUs(long)">createSeekParamsForTargetTimeUs</a></span>&#8203;(long&nbsp;timeUs)</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i1" class="rowColor">
<td class="colFirst"><code><a href="SeekMap.html" title="interface in com.google.android.exoplayer2.extractor">SeekMap</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#getSeekMap()">getSeekMap</a></span>()</code></th>
<td class="colLast">
<div class="block">Returns the seek map for the stream.</div>
</td>
</tr>
<tr id="i2" class="altColor">
<td class="colFirst"><code>int</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#handlePendingSeek(com.google.android.exoplayer2.extractor.ExtractorInput,com.google.android.exoplayer2.extractor.PositionHolder)">handlePendingSeek</a></span>&#8203;(<a href="ExtractorInput.html" title="interface in com.google.android.exoplayer2.extractor">ExtractorInput</a>&nbsp;input,
                 <a href="PositionHolder.html" title="class in com.google.android.exoplayer2.extractor">PositionHolder</a>&nbsp;seekPositionHolder)</code></th>
<td class="colLast">
<div class="block">Continues to handle the pending seek operation.</div>
</td>
</tr>
<tr id="i3" class="rowColor">
<td class="colFirst"><code>boolean</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#isSeeking()">isSeeking</a></span>()</code></th>
<td class="colLast">
<div class="block">Returns whether the last operation set by <a href="#setSeekTargetUs(long)"><code>setSeekTargetUs(long)</code></a> is still pending.</div>
</td>
</tr>
<tr id="i4" class="altColor">
<td class="colFirst"><code>protected void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#markSeekOperationFinished(boolean,long)">markSeekOperationFinished</a></span>&#8203;(boolean&nbsp;foundTargetFrame,
                         long&nbsp;resultPosition)</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i5" class="rowColor">
<td class="colFirst"><code>protected void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#onSeekOperationFinished(boolean,long)">onSeekOperationFinished</a></span>&#8203;(boolean&nbsp;foundTargetFrame,
                       long&nbsp;resultPosition)</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i6" class="altColor">
<td class="colFirst"><code>protected int</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#seekToPosition(com.google.android.exoplayer2.extractor.ExtractorInput,long,com.google.android.exoplayer2.extractor.PositionHolder)">seekToPosition</a></span>&#8203;(<a href="ExtractorInput.html" title="interface in com.google.android.exoplayer2.extractor">ExtractorInput</a>&nbsp;input,
              long&nbsp;position,
              <a href="PositionHolder.html" title="class in com.google.android.exoplayer2.extractor">PositionHolder</a>&nbsp;seekPositionHolder)</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i7" class="rowColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#setSeekTargetUs(long)">setSeekTargetUs</a></span>&#8203;(long&nbsp;timeUs)</code></th>
<td class="colLast">
<div class="block">Sets the target time in microseconds within the stream to seek to.</div>
</td>
</tr>
<tr id="i8" class="altColor">
<td class="colFirst"><code>protected boolean</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#skipInputUntilPosition(com.google.android.exoplayer2.extractor.ExtractorInput,long)">skipInputUntilPosition</a></span>&#8203;(<a href="ExtractorInput.html" title="interface in com.google.android.exoplayer2.extractor">ExtractorInput</a>&nbsp;input,
                      long&nbsp;position)</code></th>
<td class="colLast">&nbsp;</td>
</tr>
</table>
<ul class="blockList">
<li class="blockList"><a id="methods.inherited.from.class.java.lang.Object">
<!--   -->
</a>
<h3>Methods inherited from class&nbsp;java.lang.<a href="https://developer.android.com/reference/java/lang/Object.html" title="class or interface in java.lang" class="externalLink" target="_top">Object</a></h3>
<code><a href="https://developer.android.com/reference/java/lang/Object.html#clone()" title="class or interface in java.lang" class="externalLink">clone</a>, <a href="https://developer.android.com/reference/java/lang/Object.html?is-external=true#equals(java.lang.Object)" title="class or interface in java.lang" class="externalLink">equals</a>, <a href="https://developer.android.com/reference/java/lang/Object.html?is-external=true#finalize()" title="class or interface in java.lang" class="externalLink">finalize</a>, <a href="https://developer.android.com/reference/java/lang/Object.html?is-external=true#getClass()" title="class or interface in java.lang" class="externalLink">getClass</a>, <a href="https://developer.android.com/reference/java/lang/Object.html?is-external=true#hashCode()" title="class or interface in java.lang" class="externalLink">hashCode</a>, <a href="https://developer.android.com/reference/java/lang/Object.html?is-external=true#notify()" title="class or interface in java.lang" class="externalLink">notify</a>, <a href="https://developer.android.com/reference/java/lang/Object.html?is-external=true#notifyAll()" title="class or interface in java.lang" class="externalLink">notifyAll</a>, <a href="https://developer.android.com/reference/java/lang/Object.html?is-external=true#toString()" title="class or interface in java.lang" class="externalLink">toString</a>, <a href="https://developer.android.com/reference/java/lang/Object.html?is-external=true#wait()" title="class or interface in java.lang" class="externalLink">wait</a>, <a href="https://developer.android.com/reference/java/lang/Object.html?is-external=true#wait(long)" title="class or interface in java.lang" class="externalLink">wait</a>, <a href="https://developer.android.com/reference/java/lang/Object.html?is-external=true#wait(long,int)" title="class or interface in java.lang" class="externalLink" target="_top">wait</a></code></li>
</ul>
</li>
</ul>
</section>
</li>
</ul>
</div>
<div class="details">
<ul class="blockList">
<li class="blockList">
<!-- ============ FIELD DETAIL =========== -->
<section role="region">
<ul class="blockList">
<li class="blockList"><a id="field.detail">
<!--   -->
</a>
<h3>Field Detail</h3>
<a id="seekMap">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>seekMap</h4>
<pre>protected final&nbsp;<a href="BinarySearchSeeker.BinarySearchSeekMap.html" title="class in com.google.android.exoplayer2.extractor">BinarySearchSeeker.BinarySearchSeekMap</a> seekMap</pre>
</li>
</ul>
<a id="timestampSeeker">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>timestampSeeker</h4>
<pre>protected final&nbsp;<a href="BinarySearchSeeker.TimestampSeeker.html" title="interface in com.google.android.exoplayer2.extractor">BinarySearchSeeker.TimestampSeeker</a> timestampSeeker</pre>
</li>
</ul>
<a id="seekOperationParams">
<!--   -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>seekOperationParams</h4>
<pre>@Nullable
protected&nbsp;<a href="BinarySearchSeeker.SeekOperationParams.html" title="class in com.google.android.exoplayer2.extractor">BinarySearchSeeker.SeekOperationParams</a> seekOperationParams</pre>
</li>
</ul>
</li>
</ul>
</section>
<!-- ========= CONSTRUCTOR DETAIL ======== -->
<section role="region">
<ul class="blockList">
<li class="blockList"><a id="constructor.detail">
<!--   -->
</a>
<h3>Constructor Detail</h3>
<a id="&lt;init&gt;(com.google.android.exoplayer2.extractor.BinarySearchSeeker.SeekTimestampConverter,com.google.android.exoplayer2.extractor.BinarySearchSeeker.TimestampSeeker,long,long,long,long,long,long,int)">
<!--   -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>BinarySearchSeeker</h4>
<pre>protected&nbsp;BinarySearchSeeker&#8203;(<a href="BinarySearchSeeker.SeekTimestampConverter.html" title="interface in com.google.android.exoplayer2.extractor">BinarySearchSeeker.SeekTimestampConverter</a>&nbsp;seekTimestampConverter,
                             <a href="BinarySearchSeeker.TimestampSeeker.html" title="interface in com.google.android.exoplayer2.extractor">BinarySearchSeeker.TimestampSeeker</a>&nbsp;timestampSeeker,
                             long&nbsp;durationUs,
                             long&nbsp;floorTimePosition,
                             long&nbsp;ceilingTimePosition,
                             long&nbsp;floorBytePosition,
                             long&nbsp;ceilingBytePosition,
                             long&nbsp;approxBytesPerFrame,
                             int&nbsp;minimumSearchRange)</pre>
<div class="block">Constructs an instance.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>seekTimestampConverter</code> - The <a href="BinarySearchSeeker.SeekTimestampConverter.html" title="interface in com.google.android.exoplayer2.extractor"><code>BinarySearchSeeker.SeekTimestampConverter</code></a> that converts seek time in
     stream time into target timestamp.</dd>
<dd><code>timestampSeeker</code> - A <a href="BinarySearchSeeker.TimestampSeeker.html" title="interface in com.google.android.exoplayer2.extractor"><code>BinarySearchSeeker.TimestampSeeker</code></a> that will be used to search for timestamps
     within the stream.</dd>
<dd><code>durationUs</code> - The duration of the stream in microseconds.</dd>
<dd><code>floorTimePosition</code> - The minimum timestamp value (inclusive) in the stream.</dd>
<dd><code>ceilingTimePosition</code> - The minimum timestamp value (exclusive) in the stream.</dd>
<dd><code>floorBytePosition</code> - The starting position of the frame with minimum timestamp value
     (inclusive) in the stream.</dd>
<dd><code>ceilingBytePosition</code> - The position after the frame with maximum timestamp value in the
     stream.</dd>
<dd><code>approxBytesPerFrame</code> - Approximated bytes per frame.</dd>
<dd><code>minimumSearchRange</code> - The minimum byte range that this binary seeker will operate on. If
     the remaining search range is smaller than this value, the search will stop, and the seeker
     will return the position at the floor of the range as the result.</dd>
</dl>
</li>
</ul>
</li>
</ul>
</section>
<!-- ============ METHOD DETAIL ========== -->
<section role="region">
<ul class="blockList">
<li class="blockList"><a id="method.detail">
<!--   -->
</a>
<h3>Method Detail</h3>
<a id="getSeekMap()">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getSeekMap</h4>
<pre class="methodSignature">public final&nbsp;<a href="SeekMap.html" title="interface in com.google.android.exoplayer2.extractor">SeekMap</a>&nbsp;getSeekMap()</pre>
<div class="block">Returns the seek map for the stream.</div>
</li>
</ul>
<a id="setSeekTargetUs(long)">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>setSeekTargetUs</h4>
<pre class="methodSignature">public final&nbsp;void&nbsp;setSeekTargetUs&#8203;(long&nbsp;timeUs)</pre>
<div class="block">Sets the target time in microseconds within the stream to seek to.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>timeUs</code> - The target time in microseconds within the stream.</dd>
</dl>
</li>
</ul>
<a id="isSeeking()">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>isSeeking</h4>
<pre class="methodSignature">public final&nbsp;boolean&nbsp;isSeeking()</pre>
<div class="block">Returns whether the last operation set by <a href="#setSeekTargetUs(long)"><code>setSeekTargetUs(long)</code></a> is still pending.</div>
</li>
</ul>
<a id="handlePendingSeek(com.google.android.exoplayer2.extractor.ExtractorInput,com.google.android.exoplayer2.extractor.PositionHolder)">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>handlePendingSeek</h4>
<pre class="methodSignature">public&nbsp;int&nbsp;handlePendingSeek&#8203;(<a href="ExtractorInput.html" title="interface in com.google.android.exoplayer2.extractor">ExtractorInput</a>&nbsp;input,
                             <a href="PositionHolder.html" title="class in com.google.android.exoplayer2.extractor">PositionHolder</a>&nbsp;seekPositionHolder)
                      throws <a href="https://developer.android.com/reference/java/io/IOException.html" title="class or interface in java.io" class="externalLink" target="_top">IOException</a></pre>
<div class="block">Continues to handle the pending seek operation. Returns one of the <code>RESULT_</code> values from
 <a href="Extractor.html" title="interface in com.google.android.exoplayer2.extractor"><code>Extractor</code></a>.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>input</code> - The <a href="ExtractorInput.html" title="interface in com.google.android.exoplayer2.extractor"><code>ExtractorInput</code></a> from which data should be read.</dd>
<dd><code>seekPositionHolder</code> - If <a href="Extractor.html#RESULT_SEEK"><code>Extractor.RESULT_SEEK</code></a> is returned, this holder is updated
     to hold the position of the required seek.</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>One of the <code>RESULT_</code> values defined in <a href="Extractor.html" title="interface in com.google.android.exoplayer2.extractor"><code>Extractor</code></a>.</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="https://developer.android.com/reference/java/io/IOException.html" title="class or interface in java.io" class="externalLink" target="_top">IOException</a></code> - If an error occurred reading from the input.</dd>
</dl>
</li>
</ul>
<a id="createSeekParamsForTargetTimeUs(long)">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>createSeekParamsForTargetTimeUs</h4>
<pre class="methodSignature">protected&nbsp;<a href="BinarySearchSeeker.SeekOperationParams.html" title="class in com.google.android.exoplayer2.extractor">BinarySearchSeeker.SeekOperationParams</a>&nbsp;createSeekParamsForTargetTimeUs&#8203;(long&nbsp;timeUs)</pre>
</li>
</ul>
<a id="markSeekOperationFinished(boolean,long)">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>markSeekOperationFinished</h4>
<pre class="methodSignature">protected final&nbsp;void&nbsp;markSeekOperationFinished&#8203;(boolean&nbsp;foundTargetFrame,
                                               long&nbsp;resultPosition)</pre>
</li>
</ul>
<a id="onSeekOperationFinished(boolean,long)">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>onSeekOperationFinished</h4>
<pre class="methodSignature">protected&nbsp;void&nbsp;onSeekOperationFinished&#8203;(boolean&nbsp;foundTargetFrame,
                                       long&nbsp;resultPosition)</pre>
</li>
</ul>
<a id="skipInputUntilPosition(com.google.android.exoplayer2.extractor.ExtractorInput,long)">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>skipInputUntilPosition</h4>
<pre class="methodSignature">protected final&nbsp;boolean&nbsp;skipInputUntilPosition&#8203;(<a href="ExtractorInput.html" title="interface in com.google.android.exoplayer2.extractor">ExtractorInput</a>&nbsp;input,
                                               long&nbsp;position)
                                        throws <a href="https://developer.android.com/reference/java/io/IOException.html" title="class or interface in java.io" class="externalLink" target="_top">IOException</a></pre>
<dl>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="https://developer.android.com/reference/java/io/IOException.html" title="class or interface in java.io" class="externalLink" target="_top">IOException</a></code></dd>
</dl>
</li>
</ul>
<a id="seekToPosition(com.google.android.exoplayer2.extractor.ExtractorInput,long,com.google.android.exoplayer2.extractor.PositionHolder)">
<!--   -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>seekToPosition</h4>
<pre class="methodSignature">protected final&nbsp;int&nbsp;seekToPosition&#8203;(<a href="ExtractorInput.html" title="interface in com.google.android.exoplayer2.extractor">ExtractorInput</a>&nbsp;input,
                                   long&nbsp;position,
                                   <a href="PositionHolder.html" title="class in com.google.android.exoplayer2.extractor">PositionHolder</a>&nbsp;seekPositionHolder)</pre>
</li>
</ul>
</li>
</ul>
</section>
</li>
</ul>
</div>
</div>
</main>
<!-- ========= END OF CLASS DATA ========= -->
<footer role="contentinfo">
<nav role="navigation">
<!-- ======= START OF BOTTOM NAVBAR ====== -->
<div class="bottomNav"><a id="navbar.bottom">
<!--   -->
</a>
<div class="skipNav"><a href="#skip.navbar.bottom" title="Skip navigation links">Skip navigation links</a></div>
<a id="navbar.bottom.firstrow">
<!--   -->
</a>
<ul class="navList" title="Navigation">
<li><a href="../../../../../index.html">Overview</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="navBarCell1Rev">Class</li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../../../deprecated-list.html">Deprecated</a></li>
<li><a href="../../../../../index-all.html">Index</a></li>
<li><a href="../../../../../help-doc.html">Help</a></li>
</ul>
</div>
<div class="subNav">
<ul class="navList" id="allclasses_navbar_bottom">
<li><a href="../../../../../allclasses.html">All&nbsp;Classes</a></li>
</ul>
<div>
<script type="text/javascript"><!--
  allClassesLink = document.getElementById("allclasses_navbar_bottom");
  if(window==top) {
    allClassesLink.style.display = "block";
  }
  else {
    allClassesLink.style.display = "none";
  }
  //-->
</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
</div>
<div>
<ul class="subNavList">
<li>Summary:&nbsp;</li>
<li><a href="#nested.class.summary">Nested</a>&nbsp;|&nbsp;</li>
<li><a href="#field.summary">Field</a>&nbsp;|&nbsp;</li>
<li><a href="#constructor.summary">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method.summary">Method</a></li>
</ul>
<ul class="subNavList">
<li>Detail:&nbsp;</li>
<li><a href="#field.detail">Field</a>&nbsp;|&nbsp;</li>
<li><a href="#constructor.detail">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method.detail">Method</a></li>
</ul>
</div>
<a id="skip.navbar.bottom">
<!--   -->
</a></div>
<!-- ======== END OF BOTTOM NAVBAR ======= -->
</nav>
</footer>
</body>
</html>
